import { message } from 'antd';

/**
 * 上传文件到服务器
 * @param file 文件对象
 * @param type 文件类型 'image'|'video'|'model'
 * @returns 上传成功返回文件URL，失败返回null
 */
export async function uploadFile(file: File, type: 'image' | 'video' | 'model'): Promise<{url: string, fileName: string} | null> {
  try {
    const formData = new FormData();
    formData.append('file', file);
    formData.append('type', type);
    
    const response = await fetch('/api/upload/uploadAsset', {
      method: 'POST',
      body: formData
    });
    
    if (!response.ok) {
      message.error(`上传失败: HTTP ${response.status}`);
      console.error(`${type}文件上传HTTP错误:`, response.status, response.statusText);
      return null;
    }
    
    const result = await response.json();
    console.log(`${type}文件上传结果:`, result);
    
    if (result.code !== 200) {
      // 显示服务器返回的具体错误信息
      const errorMsg = result.message || '上传失败，服务器未返回错误信息';
      console.error(`${type}文件上传失败:`, errorMsg);
      return null;
    }
    
    // 确保URL字段存在
    if (!result.data || !result.data.url) {
      console.error('上传返回数据缺少URL或data字段:', result);
      return null;
    }
    
    // console.log(`${type}文件上传成功:`, result.data.url);
    
    return {
      url: result.data.url,
      fileName: result.data.fileName || file.name
    };
  } catch (error) {
    const errorMsg = error instanceof Error ? error.message : String(error);
    console.error(`${type}文件上传错误:`, errorMsg);
    message.error(`文件上传失败: ${errorMsg}`);
    return null;
  }
} 